package 文件.综合练习;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class 练习五 {
    public static void main(String[] args) {
        //对于文件的length方法获取的文件夹的大小都是错误的,只能获取文件的大小.
        File file= new File("D:\\CloudMusic");
        System.out.println(getLen(file));
        //字节/1024=KB/1024=M/1024=G
    }

    //定义一个方法统计文件夹的总大小.
    public  static long getLen(File src){
        //创建一个集合存放统计的每个文件的大小
        ArrayList<Long> arrLong=new ArrayList<>();

        //1.获取要统计的文件夹的所有的文件
        File[] arr = src.listFiles();
        //遍历这个文件夹
        for (File file : arr) {
            //如果这个文件是问价就直接统计这个文件的大小
            if (file.isFile()){
                arrLong.add(file.length());

                //如果不是不是文件递归这个文件夹
            }else {
                //进行递归,并且要将结果添加到集合中
                arrLong.add(getLen(file));
            }
        }
        //返回这个集合的和
        //定义一个变量记录所求的和
        long sum=0;
        for (Long aLong : arrLong) {
            sum+=aLong;
        }
        return sum;
    }
}
